/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package rn;

import so.Localizador;
import ifs.RNServidorIF;
import ifs.RNClienteIF;
import java.net.MalformedURLException;
import java.net.SocketException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;

/**
 *
 * @author italo
 */
public class RNCliente extends UnicastRemoteObject implements RNClienteIF {

    private RNServidorIF rnServidor;
    private Localizador localizador;

    public RNCliente() throws RemoteException, SocketException {
        super();

        Integer port = Registry.REGISTRY_PORT + 129;
        String serviceName = "ClienteService";
        setLocalizador( new Localizador(port, serviceName) );
    }

    public void notificarEntradaDeJogador(String newCliente) throws RemoteException {
        System.out.println("\nNovo cliente na sala de espera: " + newCliente);
    }

    public void realizaConexao(Localizador servidorLocalizador)
            throws RemoteException, NotBoundException, MalformedURLException, SocketException {

        System.out.println("\nTentativa de conexao ao servidor: " + servidorLocalizador);
        rnServidor =
                (RNServidorIF) Naming.lookup(servidorLocalizador.toString());
        System.out.println("Conectado ao servidor: " + rnServidor.getLocalizador());

        String realizaConexao = rnServidor.realizaConexao(getLocalizador());
        System.out.println("\nResposta do servidor a solicitacao de conexao: " + realizaConexao);
    }

// getters e setters
    public Localizador getLocalizador() throws RemoteException {
        return localizador;
    }

    public void setLocalizador(Localizador localizador) throws RemoteException {
        this.localizador = localizador;
    }
}
